home *** CD-ROM | disk | FTP | other *** search
/ MACup: Giveaway 1996 / Image.iso / Shareware & Demos / Web-Publishing / SNAP PrimeBase / PrimeBase™ Server 68K / Setup / Scripts / startup.dal < prev   
Encoding:
Text File  |  1996-07-09  |  3.8 KB  |  196 lines  |  [TEXT/ds30]

  1. /**********************************************************************/
  2. /*                                                                    */
  3. /*                       DAL Session Startup Script                   */
  4. /*    This script is executed every time a new session is created     */
  5. /*                                                                    */
  6. /**********************************************************************/
  7.  
  8.  
  9. print "/*";
  10. print "Executing Startup Script...";
  11. print "Loading procedure 'showall' - the better 'printall'...";
  12. print "*/";
  13. /* Better 'printall' */
  14. /*
  15. the show procedure:
  16. Author: Dirk Strack 7.2.92 updated 14.6.95
  17.  
  18. after sending a select statement,
  19. call this procedure to display the selected
  20. information with column heading. if you select for extract,
  21. it will display the count of rows selected.
  22.  
  23. example 1:
  24. select * from systables;
  25. show;
  26.  
  27. example 2:
  28.  
  29. declare cursor cur;
  30. declare timestamp start;
  31. start = $now();
  32. select * from systables into cur;
  33. print "select took", timemark(start), "seconds";
  34. start = $now();
  35. show(cur,9);
  36. print "show took", timemark(start), "seconds";
  37.  
  38. example 3:
  39. select * from systables;
  40. show_row;
  41. show_row;
  42. */
  43.  
  44. declare procedure timemark (start)
  45. returns varchar;
  46. argument timestamp start;
  47. {
  48.     return decimal[10,2](float $now() - float start);
  49. }
  50. end procedure timemark;
  51.  
  52. declare int maxcolsize = 22;
  53.  
  54. declare procedure colsize(c, i)
  55. returns int;
  56. argument cursor c;
  57. argument int    i;
  58. {
  59.     int    len;
  60.     int    nlen;
  61.  
  62.     len = $colwidth(c,i);
  63.     nlen = $len($colname(c,i));
  64.     if (len < nlen) len = nlen;
  65.     if (len > maxcolsize) len = maxcolsize;
  66.  
  67.     return len;
  68. }
  69. end procedure colsize;
  70.  
  71.  
  72. declare procedure showall(c, size)
  73. argument cursor c = $cursor;
  74. argument int size = 22;
  75. {
  76.     int    i,j;
  77.     int    len;
  78.     maxcolsize = size;
  79.     varchar buf;
  80.     
  81.     if ($rowcnt is not null)
  82.         print char[10] $rowcnt + " rows selected";
  83.  
  84.     print "";
  85.     buf = "";
  86.     for (i = 1; i <= $cols(c); i++)
  87.     {
  88.         buf = buf + (char[colsize(c, i)] $colname(c,i)) + "|";
  89.     }
  90.     print buf;
  91.     buf = "";
  92.     for (i = 1; i <= $cols(c); i++)
  93.     {
  94.         len = colsize(c, i);
  95.         for (j = 10; j <= len; j = j + 10)
  96.             buf = buf + "----------";
  97.         buf = buf + $substr("----------", 1, len % 10) + "|";
  98.     }
  99.  
  100.     print buf;
  101.     for each c
  102.     {
  103.         buf = "";
  104.         for (i = 1; i <= $cols(c); i++)
  105.         {
  106.             len = colsize(c,i);
  107.             if (c->:i is null)
  108.                 buf = buf + char[len] "??";
  109.             else
  110.             {
  111.                 switch($coltype(c, i))
  112.                 {
  113.                     case $boolean:
  114.                     switch (int c->:i)
  115.                     {
  116.                         case 0: buf = buf + char[len] "N";
  117.                         break;
  118.                         case 1: buf = buf + char[len] "Y";
  119.                         break;
  120.                         case 2: buf = buf + char[len] "??";
  121.                         break;
  122.                         case 3: buf = buf + char[len] "!!";
  123.                     }
  124.                     break;
  125.                     case $float:
  126.                     case $smfloat:
  127.                         buf = buf + char[len] (decimal[len,3] c->:i);
  128.                     break;
  129.                     case $timestamp:
  130.                         buf = buf + char[len] (varchar c->:i);
  131.                     break;
  132.                     case $varbin:
  133.                         buf = buf + $format("%*X", len, c->:i);
  134.                     break;
  135.                     default:
  136.                         buf = buf + char[len] c->:i;
  137.                 }
  138.             }
  139.             buf = buf + "|";
  140.         }
  141.         print buf;
  142.     }
  143. }
  144. end procedure showall;
  145.  
  146. declare procedure show_row(c)
  147. argument cursor c = $cursor;
  148. {
  149.     declare int    i, len;
  150.     declare varchar buf;
  151.     
  152.     fetch next of c;
  153.     if ($sqlcode = 0)
  154.     {
  155.         for (i = 1; i <= $cols(c); i++)
  156.         {
  157.             buf = $format("%-30s : ", $colname(c,i));
  158.             len = $colwidth(c,i);
  159.  
  160.             if (c->:i is null)
  161.                 buf = buf + "??";
  162.             else
  163.             {
  164.                 switch($coltype(c, i))
  165.                 {
  166.                     case $boolean:
  167.                         buf = buf + $substr("NY?!", c->:i + 1, 1);
  168.                     break;
  169.                     case $float:
  170.                     case $smfloat:
  171.                         buf = buf + varchar (decimal[len,3] c->:i);
  172.                     break;
  173.                     case $varbin:
  174.                         buf = buf + $format("0x%X", c->:i);
  175.                     break;
  176.                     default:
  177.                         buf = buf + (varchar c->:i);
  178.                 }
  179.             }
  180.             print buf;
  181.         }
  182.         print "";
  183.     }
  184. }
  185. end procedure show_row;
  186.  
  187. declare procedure show(c, size)
  188. argument cursor c = $cursor;
  189. argument int size = 22;
  190. {
  191.     showall(c, size);
  192. }
  193. end procedure show;
  194.  
  195. /* End of startup script */
  196.